package com.yoso.shop.application.service;

import com.yoso.base.interfaces.controller.BaseResponse;
import com.yoso.base.service.IBaseService;
import com.yoso.shop.domain.commodity.CommodityEntityExample;
import com.yoso.shop.interfaces.vo.commodity.CommodityVo;
import com.yoso.shop.interfaces.vo.dictionary.DictionaryVo;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * @author shizejin
 * @date 2022/1/30
 * @description:
 */
public interface ICommodityService extends IBaseService<CommodityVo, CommodityEntityExample> {
    CommodityVo findByCode(String commodityCode);

    CommodityVo saveOrUpdate(CommodityVo vo);

    /**
     * 新增商品信息
     */
    BaseResponse saveNewCommodityInfo(CommodityVo commodityVo, MultipartFile[] photos);

    /**
     * 获取主页主分类展示数据（轮播图上）
     */
    Map<String, List<CommodityVo>> getShowMasterCommodityData();

    /**
     * 根据id查询商品，包括字典表中的图片和标签
     */
    @Deprecated
    CommodityVo findDetailInfoById(String id);


    /**
     * 根据商品代码查询商品，包括字典表中的图片和标签
     */
    @Deprecated
    CommodityVo findDetailInfoByCode(String code);

    /**
     * 构建商品详细信息，增加字典表中的图片和标签
     */
    List<CommodityVo> buildDetailInfoList(Iterable<CommodityVo> list);

    /**
     * 数据字典中商品对应的一些信息
     *
     * @param group    数据分组 eg: 商品图片
     * @param photoSuf tag后缀 eg: _photo
     */
    Map<String, List<String>> buildCommodityCodeToSomeListMap(String group, String photoSuf);

    /**
     * @return code：自身
     */
    Map<String, CommodityVo> buildCommodityCodeToSelfMap();

    /**
     * @return 获取商品颜色和大小集合
     */
    Map<String, List<DictionaryVo>> getCommodityColorSizeListMap();
}
